package com.framework.main.sys.user.dao;

import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringEscapeUtils;

import com.framework.main.sys.user.domain.SysUserModuleVO;
import com.framework.main.sys.user.domain.UserVo;
import com.framework.base.dao.BaseDao;

/**
 * @Copyright @ 2011 All right reserved
 * @version 创建时间：Created on 2011-5-21
 * @author 作者：Create by HYH
 * @Email: 517372264@qq.com
 * @description 处理用户数据与数据库的交互
 * 
 * 
 */
public class UserDao extends BaseDao {

	public UserDao() {
		getLogger().info("userdao init");
	}

	/**
	 * 根据用户名密码进行登录查询
	 * 
	 * 
	 * @param user
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<UserVo> loginFormNamePwd(UserVo user) {
		return getSqlMapClientTemplate().queryForList(
				this.getNameSpace() + "loginFormNamePwd", user);
	}

	/**
	 * 根据登录名进行登 录的情况
	 * 
	 * @param user
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<UserVo> loginFormName(UserVo user) {
		return getSqlMapClientTemplate().queryForList(
				this.getNameSpace() + "loginFormName", user);
	}

	/**
	 * 在没有密码的情况下进行修改
	 * 
	 * 
	 * @param user
	 */
	public void doUpdateLackPwd(UserVo user) {
		getSqlMapClientTemplate().update(
				this.getNameSpace() + "doUpdateLackPwd", user);
	}

	/**
	 * 查询返回List
	 * 
	 * @param user
	 * @return 返回List
	 */
	@SuppressWarnings("rawtypes")
	public List query(String nameSql, String user) {
		return getSqlMapClientTemplate().queryForList(
				this.getNameSpace() + nameSql, user);
	}

	/**
	 * 查询返回对象
	 * 
	 * @param nameSql
	 * @param user
	 * @return 返回对象
	 */
	public Object queryByOne(String nameSql, String user) {
		return getSqlMapClientTemplate().queryForObject(
				this.getNameSpace() + nameSql, user);
	}

	/**
	 * 查询返回对象
	 * 
	 * @param nameSql
	 * @param user
	 * @return 返回对象
	 */
	public Object queryRoleByOne(String nameSql, String pk) {
		return getSqlMapClientTemplate().queryForObject(nameSql, pk);
	}

	/**
	 * 删除用户的权限
	 * 
	 * 
	 * @param user
	 */
	public void dodeleteModu(String user) {
		getSqlMapClientTemplate().delete(
				this.getNameSpace() + "doDeleteUserModuOper", user);
	}

	/**
	 * 添加用户的权限
	 * 
	 * 
	 * @param user
	 */
	public void doInsertModu(SysUserModuleVO user) {
		getSqlMapClientTemplate().insert(
				this.getNameSpace() + "doInsertUserModuOper", user);
	}

	/**
	 * 根据用户名判断是否存在用户
	 * 
	 * @param userName
	 * @return
	 */
	public boolean toIsExistUserByName(String userName) {
		String sqlWhere = " where userNamef='"
				+ StringEscapeUtils.escapeSql(userName) + "'";
		Object objValue = getSqlMapClientTemplate().queryForObject(
				getNameSpace() + "getTotalPageCount", sqlWhere);
		if (objValue != null && Integer.parseInt(objValue.toString()) > 0) {
			return true;
		} else {
			return false;
		}
	}

	@SuppressWarnings("unchecked")
	public void toChangeIndexCssFlag(Map map) {
		getSqlMapClientTemplate().update(
				this.getNameSpace() + "doUpdateIndexCssFlag", map);
	}

	@SuppressWarnings("unchecked")
	public List getUserByTrueNameOrId(String sql) {
		return getSqlMapClientTemplate().queryForList(
				"User.getUserByTrueNameOrId", sql);
	}
}
